/**
 * 
 */
package designpattern.example.pos.barpay.unionall.paychannel;

import java.util.concurrent.CyclicBarrier;

import org.apache.log4j.Logger;

import designpattern.example.pos.barpay.unionall.BarcodePay;
import designpattern.example.pos.barpay.unionall.BarpayParams;
import designpattern.example.pos.barpay.unionall.entity.PosGoodsBusinessPayConfig;
import designpattern.example.pos.barpay.unionall.templet.ChannelPayResult;
import designpattern.example.pos.barpay.unionall.templet.ChannelPayTemplate;

/**
 *
 *@类名称：SubTestpay.java
 *@类描述：
 *@创建人：zhongy
 *@创建时间：2017年9月21日-上午11:26:00
 *@修改备注:
 *@version 
 */
public class SubTestpay extends ChannelPayTemplate{
	static Logger log = Logger.getLogger(SubTestpay.class);
	
	public SubTestpay(BarpayParams params,CyclicBarrier barr){//初始化参数
		super(params, barr);	//初始化模板中的参数
	}
	public SubTestpay(){//空参构造器,在参数效验的时候需要用到
		super();
	}
	
	@Override
	public boolean checkParams(PosGoodsBusinessPayConfig config) {
		//针对特定的参数进行效验(金额、订单号、条码等在外层模板中效验)
		return true;
	}
	
	@Override
	public ChannelPayResult barpayAdapter(BarpayParams params) {
		/**
		 * 
		 * step1、入参转化; 把通用入参转化为老接口入参 
		 * step2、调用原始方法支付;
		 * step3、返回值转化; 失败的直接返回;把原始返回值封装成通用返回值
		 * step4、其他处理
		 */
		PosGoodsBusinessPayConfig payConfig=params.getConfig();
		String logPre=BarcodePay.payNameMap.get(payConfig.getPayChannelCode());
		log.info(logPre+"开始支付");
		//step1、入参转化; 把通用入参转化为老接口入参 ;例如:BarpayParams -->GoodsBusinessAlipay
		
		//step2、调用原始方法支付
		log.info("测试支付渠道支付");
		//step3、返回值转化; 把原始返回值封装成通用返回值
		log.info(logPre+"支付失败"+params.getOrderId());
		ChannelPayResult ret=new ChannelPayResult();
		ret.setIfSuccess(false);//支付成功 TODO 这边默认返回false
		ret.setApOrderId("apOrderId");
		ret.setBuyer("buyer");
		
		//step4、其他处理
		
		
		
		
		return ret;
	}
	
	

}
